﻿using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace AsTekMobile
{
    public partial class frmServisMain : Form
    {
        public Service SecilenServis { get; set; }
        private string ServisNotu;
        private int KapamaNedenID;
        private bool GarantiliDegistirebilir = true;
        private List<AracKontrolBilgi> _kontroller;
        private List<AracSorunBilgi> _sorunlar;
        private DateTime servisBaslama = DateTime.Now;

        public frmServisMain()
        {
            InitializeComponent();
            this.Load += new EventHandler(frmServisMain_Load);
        }

        void frmServisMain_Load(object sender, EventArgs e)
        {
            try
            {
                VeriYukle();
            }
            catch (Exception ex)
            {
                ErrorMgr.Opps(ex);
            }
        }

        private void VeriYukle()
        {
            cmbServis.DataSource = Database.ctor.ServisMerkezleri;
            cmbServis.DisplayMember = "Adi";

            if (SecilenServis != null)
            {
                txtFirma.Text = SecilenServis.Firma;
                txtGrup.Text = SecilenServis.Grup;
                txtHizmetYeri.Text = SecilenServis.HizmetYeri;
                txtMontajTarihi.Text = SecilenServis.MontajTarihi.ToShortDateString();
                txtMusteri.Text = SecilenServis.Musteri;
                txtPlaka.Text = SecilenServis.Plaka;
                txtSistem.Text = SecilenServis.Sistem;
                txtTelefon.Text = SecilenServis.Telefon;
                cmbServis.Text = SecilenServis.Servis;
                txtGelis.Text = SecilenServis.GelisTarihi.ToShortTimeString();
                txtGidis.Text = SecilenServis.HareketTarihi.ToShortTimeString();

                if (SecilenServis.SozlesmeVar < 1) //sözleşme yok
                {
                    if (SecilenServis.MontajTarihi.AddYears(SecilenServis.GarantiSure) < DateTime.Now)
                    {
                        txtDurum.TextBackColor = Color.Red;
                        txtDurum.Text = "Garantisi Bitti";
                        GarantiliDegistirebilir = false;
                    }
                    else
                    {
                        txtDurum.TextBackColor = Color.LightGreen;
                        txtDurum.Text = "Garantisi Devam ediyor";
                    }
                }
                else
                {
                    txtDurum.TextBackColor = Color.LightGreen;
                    txtDurum.Text = "Garantisi Devam ediyor";
                }
            }
        }

        private void UpdateServis()
        {
            Service srv = new Service();
            srv.HareketTarihi = servisBaslama;
            srv.ID = SecilenServis.ID;
            if (cmbServis.SelectedIndex > -1)
            {
                srv.ServisID = ((ServisMerkezi)cmbServis.SelectedItem).ID;
            }
            else
            {
                srv.ServisID = -1;
            }
            srv.Firma = txtFirma.Text;
            srv.Grup = txtGrup.Text;
            srv.HizmetYeri = txtHizmetYeri.Text;
            srv.Musteri = txtMusteri.Text;
            srv.Plaka = txtPlaka.Text;
            srv.Sistem = txtSistem.Text;
            srv.Telefon = txtTelefon.Text;
            srv.Servis = cmbServis.Text;
            srv.KapamaNedenID = KapamaNedenID;
            srv.Notlar = ServisNotu;

            if (_kontroller != null)
            {
                foreach (var item in _kontroller)
                {
                    srv.Kontroller.Add(item);
                }
            }

            if (_sorunlar != null)
            {
                foreach (var item in _sorunlar.Where(x => x.Tip == 1))
                {
                    srv.Sorunlari.Add(item);
                }
            }

            if (Database.ctor.SaveServis(srv))
                MessageBox.Show("Kaydedildi !");
            else
                MessageBox.Show("Kaydedilmedi !");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (Sip.Visible)
            {
                Sip.Visible = false;
            }
            else
            {
                Sip.Visible = true;
            }
        }

        private void btnSorunlar_Click(object sender, EventArgs e)
        {
            using (frmServis2 frm = new frmServis2())
            {
                if (SecilenServis != null)
                {
                    frm.SecilenServis = this.SecilenServis;
                    frm.Kontroller = Database.ctor.AracKontrolBilgileri(SecilenServis.ID);
                    frm.Sorunlar = Database.ctor.AracSorunlari(SecilenServis.ID);
                    frm.GarantiliDegistirebilir = this.GarantiliDegistirebilir;
                }
                if (frm.ShowDialog() == DialogResult.OK)
                {
                    ServisNotu = frm.ServisNotu;
                    KapamaNedenID = frm.KapamaNedenID;
                    _kontroller = frm.Kontroller;
                    _sorunlar = frm.Sorunlar;
                    UpdateServis();
                }
            }
        }

        private void btnCikis_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}